package com.cqc.jdk8.Jtext;

import org.junit.Test;

import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;

public class DecimalFormatTest {

    /**
     * 保留几位小数
     */
    @Test
    public  void f1(){

        //NumberFormat.getInstance().format()
        //保留2位小数
        DecimalFormat format = new DecimalFormat("0.00");
        String r1 = format.format(5 / 3f);
        System.out.println(r1);//1.67


        NumberFormat numberFormat = DecimalFormat.getNumberInstance();
        //小数位数
        numberFormat.setMaximumFractionDigits(5);
        String r2 = numberFormat.format(5 / 3f);//1.66667
        System.out.println(r2);
    }

    /**
     * 百分比
     * 小数位控制：使用0强制显示位，#表示可选位（如0.00%确保两位小数）。
     */
    @Test
    public  void f3(){
        DecimalFormat format = new DecimalFormat("0.00%");
        System.out.println(format.format(0.3456));
        System.out.println(format.format(0.3444));
        System.out.println(format.format(0.3));
        //
        DecimalFormat format2 = new DecimalFormat("#.##%");
        System.out.println(format2.format(0.3));
    }
    /**
     * https://blog.csdn.net/a1064072510/article/details/89887633
     */
    @Test
    public void f2(){

        DecimalFormat numberDecimalFormat = new DecimalFormat();
        //强制转换成DecimalFormat
//        numberDecimalFormat = (DecimalFormat) numberFormat;
        //保留小数点后面三位，不足的补零,前面整数部分 每隔四位 ，用 “,” 符合隔开
        numberDecimalFormat.applyPattern("#,####.000");
        //设置舍入模式 为DOWN,否则默认的是HALF_EVEN
        numberDecimalFormat.setRoundingMode(RoundingMode.DOWN);

        //设置 要格式化的数 是正数的时候。前面加前缀
        numberDecimalFormat.setPositivePrefix("Prefix  ");
        System.out.println("正数前缀  "+numberDecimalFormat.format(123456.7891));//正数前缀  Prefix  12,3456.789
        //设置 要格式化的数 是正数的时候。后面加后缀
        numberDecimalFormat.setPositiveSuffix("  Suffix");
        System.out.println("正数后缀  "+numberDecimalFormat.format(123456.7891));//正数后缀  Prefix  12,3456.789  Suffix


        //设置整数部分的最大位数
        numberDecimalFormat.setMaximumIntegerDigits(3);
        System.out.println("整数最大位数 "+numberDecimalFormat.format(123456.7891));//整数最大位数 Prefix  456.789  Suffix
        //设置整数部分最小位数
        numberDecimalFormat.setMinimumIntegerDigits(10);
        System.out.println("整数最小位数 "+numberDecimalFormat.format(123456.7891));//整数最小位数 Prefix  00,0012,3456.789  Suffix


        //设置小数部分的最大位数
        numberDecimalFormat.setMaximumFractionDigits(2);
        System.out.println("小数部分最大位数 "+numberDecimalFormat.format(123.4));//小数部分最大位数 Prefix  00,0000,0123.40  Suffix
        //设置小数部分的最小位数
        numberDecimalFormat.setMinimumFractionDigits(6);
        System.out.println("小数部分最小位数 "+numberDecimalFormat.format(123.4));//小数部分最小位数 Prefix  00,0000,0123.400000  Suffix

    }
    @Test
    public  void f4(){
        DecimalFormat format = new DecimalFormat();
        format.setMaximumFractionDigits(0);
//        format.setRoundingMode(RoundingMode.HALF_EVEN);
        System.out.println(format.format(2.5));
    }
}
